Repository navigation
docs: plan refuses a blocked residency, Unity Catalog tag values as written, and readable table names in logs (forge-cli#868) - #212
Merged
Conversation
…ritten, and readable table names in logs (forge-cli#868) Document forge-cli #868, released in 0.30.0: - plan.md: plan checks the sovereignty policy by default and refuses what fluid validate refuses (exit 1, ERR_SOVEREIGNTY_VIOLATION, no plan written; a file already at --out stays). --check-sovereignty runs that check first, then the provider hook, and writes no plan on failure. --no-check-sovereignty skips the check with a warning. - databricks.md: tag values as the contract states them, the 256-character refusal, and the in-place update of a deployment made before 0.30.0. - error-codes.md: the 0.30.0 sovereignty_violation suggestions, and a governance label as a databricks-tag-value-too-long trigger. - upgrading.md: the three changes under "Changes in 0.30.0". - governance.md, concepts/sovereignty.md and the walkthrough's stage 6 no longer call plan's check opt-in or say a failing plan still writes its file; the walkthrough shows the 0.30.0 refusal. Each behaviour was observed on data-product-forge 0.30.0 from PyPI and compared with 0.29.0: plan on a strict contract with its binding in deniedRegions exits 1 and writes no plan; the emitted Unity Catalog tags keep case and punctuation; a 257-character value is refused. The flag oracle runs against the pinned 0.29.0 parser, which has no --no-check-sovereignty, so plan.md's example is allowlisted until the 0.30.0 pin bump.
2 of 3 tasks
fas89
force-pushed
the
docs/plan-sovereignty-uc-tags-868
branch
from
November 13, 2026 16:31
4291356 to
aa95435
Compare
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Documents forge-cli #868, released in 0.30.0.
fluid planchecks sovereignty by default (docs/cli/plan.md). It refuses whatfluid validaterefuses. Understrictthat includes a binding outsideallowedRegions, one in another jurisdiction, and one on AWS, GCP, Azure or Databricks that declares no region. In every mode it includes a region indeniedRegions. A refusal exits 1 withERR_SOVEREIGNTY_VIOLATIONand writes no plan.--check-sovereigntyruns that check first, then the provider hook, and writes no plan on failure.--no-check-sovereigntyskips the check with a warning and a WARNING log (sovereignty_check_skipped).docs/providers/databricks.md): case, spaces and punctuation kept,fluid_regulationjoined with,, a value over 256 characters refused asdatabricks-tag-value-too-long, and the in-place update (~) of a deployment made before 0.30.0.docs/advanced/error-codes.md: the 0.30.0sovereignty_violationsuggestions, and a governance label as adatabricks-tag-value-too-longtrigger.docs/upgrading.md: all three changes, the log-redaction one included, added to the## Changes in 0.30.0section docs(databricks): metric views, and a schema the contract stops using is destroyed (forge-cli#865, #873) #211 created. The plan change comes first, since it can stop a pipeline on any provider. The tag change is a bullet under### Databricks.docs/advanced/governance.mdcalled plan's check opt-in,docs/concepts/sovereignty.mdlisted onlyplan --check-sovereignty, and the walkthrough's stage 6 said a failing plan still writes its file. The walkthrough now shows the 0.30.0 refusal.Related CLI PR
Areas Updated
Checklist
npm run docs:devor built it withnpm run docs:buildNotes
Observed on the release. Each behaviour was run on
data-product-forge==0.30.0from PyPI in a scratch venv, and compared with 0.29.0:strict, binding indeniedRegions:fluid plan--out--check-sovereignty--no-check-sovereigntystrict, a GCP binding with no region:fluid planadvisoryoraudit, binding indeniedRegionsadvisory, binding only outsideallowedRegions; or nosovereigntyblockUnder
strict, a GCP binding outsideallowedRegionsis now refused by the default check before the gcp hook is asked, so plan.md says the hook's example output predates 0.30.0. The walkthrough's new output block is a real 0.30.0 run: noplan.jsonand noplan.htmlare written.fluid generate iacon one Databricks contract gives the same 17 tag addresses on both releases, with these values:cost_centercc-42CC-42fluid_jurisdictionusUSfluid_regulationgdpr_ccpaGDPR, CCPAdatabricks-tag-value-too-longredact_secret_text()maskscatalog.schema.tableon 0.29.0 and keeps it on 0.30.0, and a JWT stays masked on both. The live Free Edition run (+0 ~17 -0, then applied, values read back,fluid verifyon 27 tags) is forge-cli's own, from #868 and its CHANGELOG.An independent review pass re-ran these claims against the v0.30.0 source and both CLIs. Its should-fix findings are folded in: the missing-region case, apply's checks linked rather than named per cloud, the hook-path sentence in upgrading.md, the 0.29.0 slug keeping
_, and the live-run wording.Allowlist. The docs checks pin 0.29.0, whose
planparser has no--no-check-sovereignty. Withoutdocs/cli/plan.md::--no-check-sovereigntyunderflag_oracle_ok, the flag oracle fails on plan.md's example; with it, it passes. Against 0.30.0 the oracle passes without the entry, so the pin bump should drop it.Checks run locally on the branch rebased onto #211 (pinned 0.29.0, forge-cli's CHANGELOG through 0.30.0):
check_cli_docs.py(all checks, markers included),check_providers.py,gen_contract_reference.py --check,npm run docs:buildandnode scripts/check-dist-links.mjs. All clean.Not in this PR. The 0.30.0 pin bump: the markers that still call #861, #864 and #871 unreleased, and the "Not in a release yet" section of upgrading.md. Also a gap in the release-marker sweep that lets those markers pass CI. Both are tracked separately.